package br.com.requisicao.compra.Bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import br.com.requisicao.compra.canonico.Fornecedor;
import br.com.requisicao.compra.constantes.ConstantesMensagensErros;
import br.com.requisicao.compra.exception.BeanException;
import br.com.requisicao.compra.service.IFornecedorService;
import br.com.requisicao.compra.service.impl.FornecedorService;

@ManagedBean(name = "consultaFornecedorBean")
@SessionScoped
public class ConsultaFornecedorBean {

	private Fornecedor fornecedorExclusao;
	private List<Fornecedor> listaFornecedor = new ArrayList<Fornecedor>();

	private IFornecedorService fornecedorService;

	public void consultar(ActionEvent event) {
		this.fornecedorService = new FornecedorService();
		this.listaFornecedor = fornecedorService.obtermFornecedor();
	}

	public String excluir() {
		FacesContext context = FacesContext.getCurrentInstance();
		this.fornecedorService = new FornecedorService();
		Boolean deletou = false;

		try {
			deletou = fornecedorService.excluir(this.fornecedorExclusao);

			if (deletou) {
				this.listaFornecedor.remove(this.fornecedorExclusao);
				this.fornecedorExclusao = null;
			}
		} catch (BeanException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					ConstantesMensagensErros.ERRO_INESPERADO_EXCLUIR_FORNECEDOR);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}
		return null;
	}

	/**
	 * @return the listaFornecedor
	 */
	public List<Fornecedor> getListaFornecedor() {
		return listaFornecedor;
	}

	/**
	 * @param listaFornecedor
	 *            the listaFornecedor to set
	 */
	public void setListaFornecedor(List<Fornecedor> listaFornecedor) {
		this.listaFornecedor = listaFornecedor;
	}

	/**
	 * @return the fornecedorExclusao
	 */
	public Fornecedor getFornecedorExclusao() {
		return fornecedorExclusao;
	}

	/**
	 * @param fornecedorExclusao
	 *            the fornecedorExclusao to set
	 */
	public void setFornecedorExclusao(Fornecedor fornecedorExclusao) {
		this.fornecedorExclusao = fornecedorExclusao;
	}

	/**
	 * @return the fornecedorService
	 */
	public IFornecedorService getFornecedorService() {
		return fornecedorService;
	}

	/**
	 * @param fornecedorService
	 *            the fornecedorService to set
	 */
	public void setFornecedorService(IFornecedorService fornecedorService) {
		this.fornecedorService = fornecedorService;
	}

}